{ "cells": [ { "cell_type": "markdown", "id": "0fe9a28c-9a74-4e02-a5a6-40387f4e6d0c", "metadata": {}, "source": [ "### Finding latent variables in data - Exercises & Answers" ] }, { "cell_type": "markdown", "id": "4ab1dc6f-bd4c-457e-866d-b4a68b4d9b21", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "### 1. Grit - what is it?\n", "The 'grit' factor is a concept from psychology research made mainstream by the popular science book of the same name, by the author and researcher Professor Angela Duckworth. Those high on the 'grit' factor have greater success in life, as they are able to persevere in the face of adversity to achieve their goals. Grit is thought of as a dimension of personality, or individual differences.\n", "\n", "This is all well and good, but many researchers criticise the idea of 'grit' being an aspect of personality - rather, they claim it is simply an aspect of the trait Conscientiousness, which is indeed all about peoples tendency to persevere.\n", "\n", "One way we can identify the 'uniqueness' of grit is by conducting a factor analysis of its individual questions along with questions measuring the Big Five. If everyone completes both of these questionnaires, then we have the perfect dataset to test this question.\n", "\n", "That dataset exists! Download the data from this link: https://openpsychometrics.org/_rawdata/duckworth-grit-scale-data.zip\n", "\n", "You will need to unzip it and grab the `data.csv` file.\n", "\n", "Import everything we need first, including `FactorAnalyzer` and `parallel_analysis`.\n" ] }, { "cell_type": "code", "execution_count": 1, "id": "b10b1ef3-5af3-4e36-9128-699165b733c6", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [ "hide-input" ] }, "outputs": [], "source": [ "# Your answer here\n", "# Import what we need\n", "import pandas as pd # dataframes\n", "import seaborn as sns # plots\n", "import statsmodels.formula.api as smf # Models\n", "import marginaleffects as me # marginal effects\n", "import numpy as np # numpy for some functions\n", "import pingouin as pg\n", "from factor_analyzer import FactorAnalyzer # Note we write from factor_analyzer\n", "from horns import parallel_analysis" ] }, { "cell_type": "markdown", "id": "01c9efef-abf4-4382-9393-5b2fb056ada8", "metadata": {}, "source": [ "Then read in the data into a dataframe called `grit`, specifying the separator as '\\t' (sep='\\t')." ] }, { "cell_type": "code", "execution_count": 2, "id": "bd32149d-ea3b-4f35-99a7-63ec4abb0afd", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "text/html": [ "
\n", " | country | \n", "surveyelapse | \n", "GS1 | \n", "GS2 | \n", "GS3 | \n", "GS4 | \n", "GS5 | \n", "GS6 | \n", "GS7 | \n", "GS8 | \n", "... | \n", "O7 | \n", "O8 | \n", "O9 | \n", "O10 | \n", "operatingsystem | \n", "browser | \n", "screenw | \n", "screenh | \n", "introelapse | \n", "testelapse | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", "RO | \n", "174 | \n", "1 | \n", "1 | \n", "3 | \n", "3 | \n", "3 | \n", "2 | \n", "3 | \n", "1 | \n", "... | \n", "5 | \n", "4 | \n", "5 | \n", "4 | \n", "Windows | \n", "Chrome | \n", "1366 | \n", "768 | \n", "69590 | \n", "307 | \n", "
1 | \n", "US | \n", "120 | \n", "2 | \n", "2 | \n", "3 | \n", "3 | \n", "2 | \n", "1 | \n", "3 | \n", "3 | \n", "... | \n", "4 | \n", "3 | \n", "4 | \n", "5 | \n", "Macintosh | \n", "Chrome | \n", "1280 | \n", "800 | \n", "33657 | \n", "134 | \n", "
2 | \n", "US | \n", "99 | \n", "3 | \n", "3 | \n", "3 | \n", "3 | \n", "4 | \n", "3 | \n", "4 | \n", "4 | \n", "... | \n", "5 | \n", "5 | \n", "4 | \n", "4 | \n", "Windows | \n", "Firefox | \n", "1920 | \n", "1080 | \n", "95550 | \n", "138 | \n", "
3 | \n", "KE | \n", "5098 | \n", "1 | \n", "3 | \n", "4 | \n", "2 | \n", "4 | \n", "1 | \n", "5 | \n", "4 | \n", "... | \n", "4 | \n", "2 | \n", "5 | \n", "4 | \n", "Windows | \n", "Chrome | \n", "1600 | \n", "900 | \n", "4 | \n", "4440 | \n", "
4 | \n", "JP | \n", "340 | \n", "1 | \n", "2 | \n", "3 | \n", "3 | \n", "2 | \n", "2 | \n", "2 | \n", "4 | \n", "... | \n", "4 | \n", "1 | \n", "3 | \n", "2 | \n", "Windows | \n", "Firefox | \n", "1920 | \n", "1080 | \n", "3 | \n", "337 | \n", "
5 | \n", "AU | \n", "515 | \n", "1 | \n", "2 | \n", "5 | \n", "1 | \n", "3 | \n", "1 | \n", "4 | \n", "5 | \n", "... | \n", "5 | \n", "2 | \n", "5 | \n", "5 | \n", "Windows | \n", "Chrome | \n", "1920 | \n", "1080 | \n", "2090 | \n", "554 | \n", "
6 | \n", "US | \n", "126 | \n", "2 | \n", "1 | \n", "3 | \n", "4 | \n", "1 | \n", "1 | \n", "1 | \n", "1 | \n", "... | \n", "5 | \n", "5 | \n", "5 | \n", "5 | \n", "Windows | \n", "Chrome | \n", "1366 | \n", "768 | \n", "36 | \n", "212 | \n", "
7 | \n", "RO | \n", "208 | \n", "3 | \n", "1 | \n", "1 | \n", "4 | \n", "1 | \n", "3 | \n", "4 | \n", "4 | \n", "... | \n", "5 | \n", "3 | \n", "4 | \n", "3 | \n", "Windows | \n", "Chrome | \n", "1366 | \n", "768 | \n", "6 | \n", "207 | \n", "
8 | \n", "EU | \n", "130 | \n", "1 | \n", "3 | \n", "3 | \n", "1 | \n", "4 | \n", "1 | \n", "5 | \n", "4 | \n", "... | \n", "5 | \n", "1 | \n", "4 | \n", "5 | \n", "Windows | \n", "Microsoft Internet Explorer | \n", "1600 | \n", "1000 | \n", "14 | \n", "183 | \n", "
9 | \n", "NZ | \n", "129 | \n", "2 | \n", "3 | \n", "2 | \n", "2 | \n", "4 | \n", "2 | \n", "4 | \n", "4 | \n", "... | \n", "4 | \n", "3 | \n", "4 | \n", "4 | \n", "Macintosh | \n", "Chrome | \n", "1440 | \n", "900 | \n", "68 | \n", "143 | \n", "
10 rows × 98 columns
\n", "\n", " | GS1 | \n", "GS2 | \n", "GS3 | \n", "GS4 | \n", "GS5 | \n", "GS6 | \n", "GS7 | \n", "GS8 | \n", "GS9 | \n", "GS10 | \n", "... | \n", "O1 | \n", "O2 | \n", "O3 | \n", "O4 | \n", "O5 | \n", "O6 | \n", "O7 | \n", "O8 | \n", "O9 | \n", "O10 | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", "1 | \n", "1 | \n", "3 | \n", "3 | \n", "3 | \n", "2 | \n", "3 | \n", "1 | \n", "3 | \n", "2 | \n", "... | \n", "5 | \n", "2 | \n", "4 | \n", "1 | \n", "4 | \n", "2 | \n", "5 | \n", "4 | \n", "5 | \n", "4 | \n", "
1 | \n", "2 | \n", "2 | \n", "3 | \n", "3 | \n", "2 | \n", "1 | \n", "3 | \n", "3 | \n", "2 | \n", "1 | \n", "... | \n", "4 | \n", "2 | \n", "5 | \n", "2 | \n", "4 | \n", "1 | \n", "4 | \n", "3 | \n", "4 | \n", "5 | \n", "
2 | \n", "3 | \n", "3 | \n", "3 | \n", "3 | \n", "4 | \n", "3 | \n", "4 | \n", "4 | \n", "3 | \n", "3 | \n", "... | \n", "4 | \n", "2 | \n", "4 | \n", "2 | \n", "4 | \n", "3 | \n", "5 | \n", "5 | \n", "4 | \n", "4 | \n", "
3 | \n", "1 | \n", "3 | \n", "4 | \n", "2 | \n", "4 | \n", "1 | \n", "5 | \n", "4 | \n", "1 | \n", "1 | \n", "... | \n", "5 | \n", "2 | \n", "3 | \n", "2 | \n", "4 | \n", "1 | \n", "4 | \n", "2 | \n", "5 | \n", "4 | \n", "
4 | \n", "1 | \n", "2 | \n", "3 | \n", "3 | \n", "2 | \n", "2 | \n", "2 | \n", "4 | \n", "3 | \n", "3 | \n", "... | \n", "5 | \n", "3 | \n", "2 | \n", "2 | \n", "3 | \n", "3 | \n", "4 | \n", "1 | \n", "3 | \n", "2 | \n", "
5 rows × 62 columns
\n", "\n", " | GS1 | \n", "GS2 | \n", "GS3 | \n", "GS4 | \n", "GS5 | \n", "GS6 | \n", "GS7 | \n", "GS8 | \n", "GS9 | \n", "GS10 | \n", "... | \n", "C1 | \n", "C2 | \n", "C3 | \n", "C4 | \n", "C5 | \n", "C6 | \n", "C7 | \n", "C8 | \n", "C9 | \n", "C10 | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", "1 | \n", "1 | \n", "3 | \n", "3 | \n", "3 | \n", "2 | \n", "3 | \n", "1 | \n", "3 | \n", "2 | \n", "... | \n", "2 | \n", "4 | \n", "4 | \n", "3 | \n", "2 | \n", "4 | \n", "3 | \n", "2 | \n", "2 | \n", "4 | \n", "
1 | \n", "2 | \n", "2 | \n", "3 | \n", "3 | \n", "2 | \n", "1 | \n", "3 | \n", "3 | \n", "2 | \n", "1 | \n", "... | \n", "4 | \n", "3 | \n", "4 | \n", "3 | \n", "1 | \n", "3 | \n", "5 | \n", "2 | \n", "5 | \n", "3 | \n", "
2 | \n", "3 | \n", "3 | \n", "3 | \n", "3 | \n", "4 | \n", "3 | \n", "4 | \n", "4 | \n", "3 | \n", "3 | \n", "... | \n", "2 | \n", "2 | \n", "4 | \n", "2 | \n", "3 | \n", "4 | \n", "5 | \n", "3 | \n", "3 | \n", "4 | \n", "
3 | \n", "1 | \n", "3 | \n", "4 | \n", "2 | \n", "4 | \n", "1 | \n", "5 | \n", "4 | \n", "1 | \n", "1 | \n", "... | \n", "4 | \n", "1 | \n", "5 | \n", "1 | \n", "4 | \n", "1 | \n", "4 | \n", "1 | \n", "4 | \n", "3 | \n", "
4 | \n", "1 | \n", "2 | \n", "3 | \n", "3 | \n", "2 | \n", "2 | \n", "2 | \n", "4 | \n", "3 | \n", "3 | \n", "... | \n", "3 | \n", "1 | \n", "3 | \n", "1 | \n", "4 | \n", "2 | \n", "3 | \n", "2 | \n", "3 | \n", "4 | \n", "
5 | \n", "1 | \n", "2 | \n", "5 | \n", "1 | \n", "3 | \n", "1 | \n", "4 | \n", "5 | \n", "2 | \n", "3 | \n", "... | \n", "5 | \n", "3 | \n", "4 | \n", "1 | \n", "4 | \n", "3 | \n", "4 | \n", "1 | \n", "4 | \n", "5 | \n", "
6 | \n", "2 | \n", "1 | \n", "3 | \n", "4 | \n", "1 | \n", "1 | \n", "1 | \n", "1 | \n", "4 | \n", "1 | \n", "... | \n", "2 | \n", "4 | \n", "5 | \n", "3 | \n", "2 | \n", "1 | \n", "4 | \n", "3 | \n", "4 | \n", "4 | \n", "
7 | \n", "3 | \n", "1 | \n", "1 | \n", "4 | \n", "1 | \n", "3 | \n", "4 | \n", "4 | \n", "3 | \n", "3 | \n", "... | \n", "4 | \n", "1 | \n", "5 | \n", "3 | \n", "3 | \n", "1 | \n", "5 | \n", "3 | \n", "5 | \n", "4 | \n", "
8 | \n", "1 | \n", "3 | \n", "3 | \n", "1 | \n", "4 | \n", "1 | \n", "5 | \n", "4 | \n", "2 | \n", "1 | \n", "... | \n", "4 | \n", "3 | \n", "4 | \n", "1 | \n", "3 | \n", "1 | \n", "3 | \n", "1 | \n", "4 | \n", "4 | \n", "
9 | \n", "2 | \n", "3 | \n", "2 | \n", "2 | \n", "4 | \n", "2 | \n", "4 | \n", "4 | \n", "2 | \n", "3 | \n", "... | \n", "4 | \n", "3 | \n", "4 | \n", "3 | \n", "2 | \n", "3 | \n", "4 | \n", "2 | \n", "3 | \n", "4 | \n", "
10 rows × 22 columns
\n", "\n", " | Q1 | \n", "Q2 | \n", "Q3 | \n", "Q4 | \n", "Q5 | \n", "Q6 | \n", "Q7 | \n", "Q8 | \n", "Q9 | \n", "Q10 | \n", "... | \n", "race_arab | \n", "race_asian | \n", "race_black | \n", "race_white | \n", "race_hispanic | \n", "race_nativeam | \n", "race_nativeau | \n", "race_other | \n", "nerdy | \n", "ASD | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", "3 | \n", "5 | \n", "3 | \n", "3 | \n", "5 | \n", "5 | \n", "5 | \n", "3 | \n", "5 | \n", "5 | \n", "... | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "7 | \n", "2 | \n", "
1 | \n", "4 | \n", "4 | \n", "4 | \n", "3 | \n", "5 | \n", "2 | \n", "5 | \n", "1 | \n", "4 | \n", "4 | \n", "... | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "6 | \n", "2 | \n", "
2 | \n", "5 | \n", "5 | \n", "5 | \n", "5 | \n", "5 | \n", "5 | \n", "5 | \n", "5 | \n", "5 | \n", "5 | \n", "... | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "7 | \n", "2 | \n", "
3 | \n", "5 | \n", "5 | \n", "5 | \n", "5 | \n", "5 | \n", "5 | \n", "5 | \n", "3 | \n", "5 | \n", "5 | \n", "... | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "7 | \n", "2 | \n", "
4 | \n", "4 | \n", "4 | \n", "4 | \n", "4 | \n", "4 | \n", "4 | \n", "4 | \n", "4 | \n", "4 | \n", "5 | \n", "... | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "6 | \n", "2 | \n", "
5 rows × 80 columns
\n", "\n", " | Q1 | \n", "Q2 | \n", "Q3 | \n", "Q4 | \n", "Q5 | \n", "Q6 | \n", "Q7 | \n", "Q8 | \n", "Q9 | \n", "Q10 | \n", "... | \n", "Q18 | \n", "Q19 | \n", "Q20 | \n", "Q21 | \n", "Q22 | \n", "Q23 | \n", "Q24 | \n", "Q25 | \n", "Q26 | \n", "nerdy | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", "3 | \n", "5 | \n", "3 | \n", "3 | \n", "5 | \n", "5 | \n", "5 | \n", "3 | \n", "5 | \n", "5 | \n", "... | \n", "5 | \n", "5 | \n", "5 | \n", "5 | \n", "5 | \n", "5 | \n", "5 | \n", "5 | \n", "5 | \n", "7 | \n", "
1 | \n", "4 | \n", "4 | \n", "4 | \n", "3 | \n", "5 | \n", "2 | \n", "5 | \n", "1 | \n", "4 | \n", "4 | \n", "... | \n", "3 | \n", "1 | \n", "3 | \n", "3 | \n", "3 | \n", "4 | \n", "4 | \n", "4 | \n", "5 | \n", "6 | \n", "
2 | \n", "5 | \n", "5 | \n", "5 | \n", "5 | \n", "5 | \n", "5 | \n", "5 | \n", "5 | \n", "5 | \n", "5 | \n", "... | \n", "4 | \n", "5 | \n", "5 | \n", "5 | \n", "5 | \n", "5 | \n", "5 | \n", "3 | \n", "5 | \n", "7 | \n", "
3 | \n", "5 | \n", "5 | \n", "5 | \n", "5 | \n", "5 | \n", "5 | \n", "5 | \n", "3 | \n", "5 | \n", "5 | \n", "... | \n", "5 | \n", "5 | \n", "5 | \n", "4 | \n", "1 | \n", "5 | \n", "5 | \n", "5 | \n", "5 | \n", "7 | \n", "
4 | \n", "4 | \n", "4 | \n", "4 | \n", "4 | \n", "4 | \n", "4 | \n", "4 | \n", "4 | \n", "4 | \n", "5 | \n", "... | \n", "5 | \n", "3 | \n", "5 | \n", "5 | \n", "4 | \n", "4 | \n", "5 | \n", "4 | \n", "0 | \n", "6 | \n", "
5 rows × 27 columns
\n", "